package com.atguigu.chaptar1

object Test4 {
  /**
   * 4、根据指定的规则获取数组中最大元素
   *   Array("zhangsan 30 3500","lisi 25 1800","zhaoliu 29 4500")
   *   规则: 获取工资高的人的信息
   *   结果: "zhaoliu 29 4500"
   */
    //1.定义高阶函数,参数1为数组,函数类型:参数取数组中的字符串,能够比较大小的得为整数,所以返回值应该是Int
  def big(arr:Array[String],func:String=>Int)={
      //定义临时变量接收最大值:  函数规则:使用字符串哪个字段比较大小
      var tmp = func(arr(0))
      //定义临时变量接收最大值所在字符串
      var tmpPerson = arr(0)
      //2.遍历取数组元素
      for(a<-arr){
      //函数规则:使用字符串哪个字段比较大小
        val str = func(a)
        //3.进行比较大小
        if(str > tmp){
          tmp = str
          tmpPerson = a
        }
      }
    //4.返回结果字符串
      tmpPerson
  }
  def main(args: Array[String]): Unit = {
    val arr = Array("zhangsan 30 3500","lisi 25 1800","zhaoliu 29 4500")
    //5.定义函数规则
    val func=(x:String)=>{x.split(" ")(2).toInt}
    //6.传入方法
    println(big(arr, func))
    //7.func值传递的最终简化版
    println(big(arr, _.split(" ")(2).toInt))
  }
}
